#include "qqmusic.h"
#include "ui_qqmusic.h"
#include <QMouseEvent>
#include <QPoint>
#include <QWidget>
#include <QResizeEvent>
#include <QGraphicsDropShadowEffect>
#include <QPainter>
MiniMusic::MiniMusic(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::QQMusic)
{
    ui->setupUi(this);

    // 一直要初始化
    initUI();
}
MiniMusic::~MiniMusic()
{
    delete ui;
}


void MiniMusic::initUI()
{
    // 设置无边框窗口，即窗口将来没有标题栏
    setWindowFlag(Qt::FramelessWindowHint);

    // 设置窗⼝背景透明
    this->setAttribute(Qt::WA_TranslucentBackground);

    // 给窗⼝设置阴影效果
    QGraphicsDropShadowEffect* shadowEffect = new QGraphicsDropShadowEffect(this);
    shadowEffect->setOffset(0,0); // 设置阴影偏移
    shadowEffect->setColor("#000000"); // 设置阴影颜⾊：⿊⾊
    shadowEffect->setBlurRadius(10); // 设置阴影的模糊半径
    ui->background->setGraphicsEffect(shadowEffect);
//    this->setGraphicsEffect(shadowEffect);
}




void MiniMusic::mousePressEvent(QMouseEvent *event)
{
    // 拦截鼠标左键单击事件
    if (event->button() == Qt::LeftButton){
        // event->glovalPos(); 鼠标按下事件发生时，光标相对于屏幕左上角位置
        // fameGeometry().topLeft(): 鼠标按下事件发生时，窗口左上角的位置
        // geometry(): 不包括边框及顶部标题区的窗口范围
        // fameGeometry(): 包括边框及顶部标题区的窗口范围
        // 鼠标按下时， 窗口左上角和光标之间的距离差
        // 想要窗口鼠标按下时窗口移动，只需要在mouseMoveEvent中，让光标和窗⼝左上⻆保持相同的位置差
        // 获取⿏标相对于屏幕左上⻆的全局坐标
        // 因为我们上面设置了无边框窗口，所以使用frameGeometry() 和 geometry() 返回值一样
        dragPosition = event->globalPos() - frameGeometry().topLeft();
    } else {
        QWidget::mousePressEvent(event);
    }

}

void MiniMusic::mouseMoveEvent(QMouseEvent *event)
{
    // 这里使用了event->button()来判断鼠标按键状态，这是不正确的。
    // 而在鼠标移动事件里，它返回的是Qt::NoButton。
    // 应该使用event->buttons()（注意这里是复数形式）来判断鼠标按键状态，它能返回当前所有被按下的按键。
    if (event->buttons() == Qt::LeftButton){
        // 根据鼠标移动更新窗口位置
        move(event->globalPos() - dragPosition);
    } else{
        QWidget::mousePressEvent(event);
    }

}

void MiniMusic::mouseReleaseEvent(QMouseEvent *event)
{
    if (event->button() == Qt::LeftButton) {
        // 可以在这里添加释放左键后的处理
        event->accept();
    } else {
            QWidget::mouseReleaseEvent(event);
    }
}


void MiniMusic::on_quit_clicked()
{
    close();
}
